/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package socafeclient;

import entity.Comandaproducto;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *Esta clase genera el desglose del total
 * @author alberto
 */
public class Cobrar {

    private double total;
    private List<Comandaproducto> productos;
    private double subtotal;
    private final double DESGLOSE = 1.16;
    private final double IVA = 0.16;
    private DecimalFormat formateador;    
    private double iva;
    
    public Cobrar() {
        this.formateador = new DecimalFormat("###0. ##");    
    }
    
    public void desglose(int idComanda){
        
        productos = Main.comandaproductoFacade.findList(idComanda);
                
        total = 0;
        
        for (Iterator it = productos.iterator(); it.hasNext();){
             Comandaproducto tupla = (Comandaproducto) it.next();
            total += tupla.getImporte() * tupla.getCantidad();
        }
        
        desglosar();       
        
    }
    
    public void desglose(double total){
        this.total = total;
        desglosar();
    }
    
    public void desglosar(){
       
        try {
            subtotal = formateador.parse(formateador.format(total / DESGLOSE)).doubleValue();
            iva = formateador.parse(formateador.format(subtotal * IVA)).doubleValue();
            total = formateador.parse(formateador.format(total)).doubleValue();
        } catch (ParseException ex) {
            Logger.getLogger(Caja.class.getName()).log(Level.SEVERE, null, ex);
        } 
    }
    
    public List<Comandaproducto> getProductos() {
        return productos;
    }

    public double getSubtotal() {
        return subtotal;
    }

    public double getTotal() {
        return total;
    }
    
    public double getIva() {
        return iva;
    }
    
    public double formatear(double cantidad) throws ParseException{
        cantidad = formateador.parse(formateador.format(cantidad)).doubleValue();
        return cantidad;
    }
}
